001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Nov 28, 2002
005 * Time: 11:50:25 PM
006 */
007
008 package EVolve.visualization.XYViz.RefRefViz;
009
010 import EVolve.visualization.*;
011 import EVolve.visualization.Dimension;
012 import EVolve.visualization.VizFactory.VisualizationFactory;
013 import EVolve.data.*;
014 import EVolve.util.predefinedutils.VizInfo;
015 import EVolve.util.painters.CorrelationPainter;
016 import EVolve.exceptions.VizInfoCreateException;
017 import EVolve.Scene;
018
019 import javax.swing.*;
020 import java.util.HashMap;
021 import java.awt.event.*;
022
023 public class CorrelationViz extends ReferenceReferenceVisualization{
024 private int valueMax;
025 private JMenuItem itemSelectX, itemSelectY, itemSelectAllX, itemSelectAllY;
026 private static JMenuItem selectionMenu[] = null;
027
028 public Dimension[] createDimension() {
029 Dimension[] returnVal = new Dimension[3];
030 Dimension[] temp = super.createDimension();
031
032 zAxis = new ValueDimension();
033
034 returnVal[0] = temp[0];
035 returnVal[1] = temp[1];
036 returnVal[2] = zAxis;
037
038 return returnVal;
039 }
040
041 public void preVisualize() {
042 super.preVisualize();
043 valueMax = 0;
044 image = new AutoImage();
045 value = new int[xAxis.getMaxEntityNumber()][yAxis.getMaxEntityNumber()];
046 for (int i = 0; i < value.length; i++) {
047 for (int j = 0; j < value[i].length; j++) {
048 value[i][j] = 0;
049 }
050 }
051 installPainter();
052 }
053
054 public void receiveElement(Element element) {
055 if (element.isOptional()) return;
056
057 value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] += zAxis.getField(element);
058
059 if (value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] > valueMax) {
060 valueMax = value[(int)xAxis.getField(element)][(int)yAxis.getField(element)];
061 }
062 }
063
064 public void visualize() {
065 painter.paint(image,-1,-1,valueMax);
066 sort();
067 }
068
069 public HashMap getCurrentConfigure() {
070 try {
071 HashMap configure = super.getCurrentConfigure();
072
073 VizInfo vizInfo = new VizInfo();
074 vizInfo.setFactory((VisualizationFactory)configure.get("Factory"));
075 vizInfo.setSubject((ElementDefinition)configure.get("Subject"));
076
077 String[] dimensionDefs = new String[3];
078 dimensionDefs[0] = xAxis.getName() ;
079 dimensionDefs[1] = yAxis.getName() ;
080 dimensionDefs[2] = zAxis.getName() ;
081 configure.put("Dimension",vizInfo.createDimension(dimensionDefs));
082
083 return configure;
084 } catch (VizInfoCreateException e) {
085 Scene.showErrorMessage(e.getMessage());
086 }
087 return null;
088 }
089
090 protected void updateConfiguration() {
091 info[0] = xAxis.getName() +": ";
092 info[1] = " " + yAxis.getName() +": ";
093 info[2] = " Correlation: ";
094
095 super.updateConfiguration();
096 }
097
098 public long getxMax() {
099 return xAxis.getEntityNumber();
100 }
101
102 protected void changeOrientation() {
103 int newValue[][] = new int[value[0].length][value.length];
104 for (int i = 0; i < newValue.length; i++) {
105 for (int j = 0; j < newValue[i].length ; j++) {
106 newValue[i][j] = value[newValue[i].length - j - 1][newValue.length - i - 1];
107 }
108 }
109 value = newValue;
110 super.changeOrientation();
111 }
112
113 protected void installPainter() {
114 painter = new CorrelationPainter(value);
115 }
116
117 public JMenuItem[] createSelectionMenuItem() {
118 if (selectionMenu != null) return selectionMenu;
119
120 itemSelectX = new JCheckBoxMenuItem("Occurred Entities on X Axis");
121 itemSelectX.setMnemonic(KeyEvent.VK_X);
122 itemSelectX.addActionListener(new ActionListener() {
123 public void actionPerformed(ActionEvent e) {
124 boolean selected = itemSelectX.isSelected();
125 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_X_AXIS);
126
127 if (itemSelectAllX.isSelected() && selected) {
128 itemSelectAllX.setSelected(false);
129 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_ALL_X_AXIS);
130 }
131 }
132 });
133 itemSelectX.setSelected(false);
134
135 itemSelectAllX = new JCheckBoxMenuItem("All Entities on X Axis");
136 itemSelectAllX.setMnemonic(KeyEvent.VK_A);
137 itemSelectAllX.addActionListener(new ActionListener() {
138 public void actionPerformed(ActionEvent e) {
139 boolean selected = itemSelectAllX.isSelected();
140 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_X_AXIS);
141
142 if (itemSelectX.isSelected() && selected) {
143 itemSelectX.setSelected(false);
144 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_X_AXIS);
145 }
146 }
147 });
148 itemSelectAllX.setSelected(true);
149
150 itemSelectY = new JCheckBoxMenuItem("Occurred Entities on Y Axis");
151 itemSelectY.setMnemonic(KeyEvent.VK_Y);
152 itemSelectY.addActionListener(new ActionListener() {
153 public void actionPerformed(ActionEvent e) {
154 boolean selected = itemSelectY.isSelected();
155 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_Y_AXIS);
156
157 if (itemSelectAllY.isSelected() && selected) {
158 itemSelectAllY.setSelected(false);
159 SELECT_OPTION = switchOption(false,SELECT_OPTION, SELECT_ALL_Y_AXIS);
160 }
161 }
162 });
163 itemSelectY.setSelected(false);
164
165 itemSelectAllY = new JCheckBoxMenuItem("All Entities on Y Axis");
166 itemSelectAllY.setMnemonic(KeyEvent.VK_E);
167 itemSelectAllY.addActionListener(new ActionListener() {
168 public void actionPerformed(ActionEvent e) {
169 boolean selected = itemSelectAllY.isSelected();
170 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_Y_AXIS);
171
172 if (itemSelectY.isSelected() && selected) {
173 itemSelectY.setSelected(false);
174 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_Y_AXIS);
175 }
176 }
177 });
178 itemSelectAllY.setSelected(true);
179
180 selectionMenu = new JMenuItem[4];
181 selectionMenu[0] = itemSelectX;
182 selectionMenu[1] = itemSelectAllX;
183 selectionMenu[2] = itemSelectY;
184 selectionMenu[3] = itemSelectAllY;
185
186 return selectionMenu;
187 }
188
189
190 }